From 597683c799e9d53aba3d2af4758d35dd7bf437b4 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 23 Jul 2008 09:58:48 +0100 Subject: [PATCH] vtd: During parsing DMAR table, if find RMRR is incorrect, return error. Signed-off-by: Weidong Han --- xen/drivers/passthrough/vtd/dmar.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c index 501622edd1..1d39575ecc 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -349,6 +349,12 @@ acpi_parse_one_rmrr(struct acpi_dmar_entry_header *header) void *dev_scope_start, *dev_scope_end; int ret = 0; + if ( rmrr->base_address >= rmrr->end_address ) + { + dprintk(XENLOG_ERR VTDPREFIX, "RMRR is incorrect.\n"); + return -EFAULT; + } + rmrru = xmalloc(struct acpi_rmrr_unit); if ( !rmrru ) return -ENOMEM; -- 2.30.2